🎯 今日學習目標
- 了解 ModelB6.py 的神經網路架構及其組成部分。
- 探討 ModelB6 與 supercombo079 之間的關聯。
- 理解模型的輸入與輸出,以及 RNN 在網路中的作用。
- 分析模型訓練的過程與實際應用中的挑戰。
🧠 ModelB6.py 與 supercombo079 的關聯
ModelB6.py 是模仿 supercombo079 建立的神經網路模型,包含了 EfficientNet、RNN 及 PoseNet 三個部分。這些模型結合後,主要用於進行自駕車的路徑預測。
ModelB6 與 supercombo079 的對比
-
supercombo079 是 2019 年由 common AI 開發的模型,其主要作用是進行自動駕駛中的路徑預測。
- 我們現在使用的 supercombo092 是經過改進的新版本,主要在路徑標識上有更多的資訊,例如加入了左右車道的標線。
模型比較
-
supercombo079:僅有兩條路標線。
-
supercombo092:具有四條路標線,增加了對左右車道的識別能力,適用於更複雜的路況。
⚙️ ModelB6 的架構解析
ModelB6 是基於 EfficientNet 與 RNN 架構的一個多輸入多輸出的模型。它主要包含四個輸入:
-
影像檔案數據:yuv 格式的影像數據會被轉換成 h5 格式進行處理。
-
左右駕駛訊息:這是關於自駕車當前駕駛狀態的數據。
-
導航訊息(Desire):包括當前是否需要直行、左轉、右轉等操作,這會影響路徑規劃。
-
RNN State:過去的輸出訊息會回饋成為未來輸入的一部分,讓模型能夠基於歷史數據進行預測。
🛠️ 模型的輸入與 RNN 的作用
在 ModelB6.py 中,RNN(循環神經網路) 負責將之前的輸出回饋進入網路,使得模型能夠考慮到過去的狀態,這在時間序列的預測中特別重要。
輸入與輸出分析
-
輸入:
-
影像數據:格式為
(1, 12, 128, 256)
,其中 12 是時間步長,128 是影像的高度,256 是影像的寬度。
-
左右駕駛訊息:格式為
(1, 2)
。
-
導航訊息(Desire):這是一個向量
(1, 8)
,代表駕駛的預期行為,例如是否要左轉、右轉或直行。
-
RNN State:格式為
(1, 512)
,記錄了過去的輸出。
-
輸出:
- 總共會產生 12 個 output,但圖中只顯示 11 個,這是因為有一個輸出會被作為 RNN 的 Hidden State,用於未來的輸入。
📝 模型訓練與實際應用中的挑戰
在訓練 ModelB6 時,我們遇到了一些問題,特別是在 custom loss 定義方面。模型的預測路徑過短,這可能是因為訓練時未將雷達數據考慮進去。
訓練過程中的挑戰
-
Custom Loss 的問題:我們在訓練時,custom loss 的定義可能不夠完整,沒有將雷達數據正確引入。
-
實際應用中的問題:在車機系統上運行時,模型有時無法正確顯示預期的黃色三角形,這代表模型未能準確預測前方的車輛。
解決這些問題需要我們重新設計 custom loss,並嘗試將雷達數據納入模型的訓練中。
Tensor 的定義與介紹
在深度學習中,Tensor(張量) 是一個非常重要的概念,幾乎所有的資料都會以張量的形式表示。它本質上是多維數據的容器,能夠承載標量、向量、矩陣甚至是更高維度的數據。
🎯 Tensor 的基本概念
Tensor 可以理解為不同維度數據的泛化形式。它是對資料的維度(dimension)進行分類和表示的工具。
1️⃣ 標量(Scalar)
-
定義:標量是 0 維的數據,也就是單一的一個數字。
-
範例:
s = 5 # 單純的一個數字
2️⃣ 向量(Vector)
3️⃣ 矩陣(Matrix)
-
定義:矩陣是 2 維的數據,即由行和列組成的數據表。
-
範例:
m = [[1, 2, 3], [4, 5, 6]] # 2x3 的矩陣,包含兩行三列
4️⃣ 多維數組(n-dimensional array)
-
定義:當資料超過兩個維度時,我們稱之為 n 維數組 或 高維張量。
-
範例:
t = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] # 3 維張量
🌟 總結:
-
Tensor 可以是 標量(0 維)、向量(1 維)、矩陣(2 維)或 n 維數組(n 維)。不同的維度決定了它承載數據的複雜程度。
🛠️ Tensor 在深度學習中的應用
在深度學習中,神經網路通常會處理高維數據,例如影像、音訊或影片。這些數據都會以 張量 的形式傳遞給模型,模型再通過層層的計算,對這些張量進行轉換並最終產生預測結果。
1️⃣ 影像資料的 Tensor 表示
2️⃣ 影像處理中的高維 Tensor
- 在進行影像處理時,尤其是在卷積神經網路(CNN)中,影像會被轉換成更高維度的張量,這些張量代表了影像的特徵圖(Feature Maps)。隨著神經網路的層數加深,張量的維度也會隨之改變。
🔄 Tensor 的重要性
Tensor 之所以重要,是因為它能夠表示任意維度的數據,這對於需要處理大量數據的神經網路來說至關重要。透過操作張量,我們可以對不同形狀、大小的數據進行運算,這是深度學習模型能夠運行的基礎。
📝 小結
Tensor 是深度學習中最基礎的數據單位,它可以是從 標量 到 n 維數組 的任何一種數據結構。通過張量的靈活性,深度學習模型能夠處理各種類型的數據,並進行複雜的運算。了解張量的概念,是理解深度學習運作的第一步。
🚀 Day 5 小結
今天我們學習了:
-
ModelB6.py 與 supercombo079 之間的關係,並分析了 092 版本中的改進。
-
ModelB6 的架構,包括四個輸入與 RNN 的循環機制。
-
訓練中的挑戰,特別是在 custom loss 的定義上需要進行改進。
接下來,我們將進一步優化模型,並嘗試解決自駕系統中的路徑預測問題。🚗💨